﻿using QuanLyThuVien.BLL;
using QuanLyThuVien.DTO;
using QuanLyThuVien.Supporter;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.GUI
{
    public partial class GUITacGia : DevComponents.DotNetBar.Office2007Form
    {
        private BLLTacGia _bllTacGia;
        private DTOTacGia _TacGia;
        private THAOTAC _ThaoTac;

        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public GUITacGia()
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = THAOTAC.XEM;
            _TacGia = new DTOTacGia();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 1 tham số
        //----------------------------------------------------------------------
        public GUITacGia(THAOTAC thaotac)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _TacGia = new DTOTacGia();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 2 tham số
        //----------------------------------------------------------------------
        public GUITacGia(THAOTAC thaotac, DTOTacGia tacgia)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _TacGia = tacgia;
        }

        //----------------------------------------------------------------------
        //Desc: khởi tạo
        //----------------------------------------------------------------------
        public void KhoiTao()
        {
            _bllTacGia = new BLLTacGia();
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật giao diện
        //----------------------------------------------------------------------
        public void CapNhatGiaoDien()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    this.Text = "THÊM TÁC GIẢ";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = true;
                    _btnSua.Visible = false;

                    _txtTenTG.ReadOnly = false;
                    break;
                case THAOTAC.SUA:
                    this.Text = "CẬP NHẬT TÁC GIẢ";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = false;
                    _btnSua.Visible = true;

                    _txtTenTG.ReadOnly = false;
                    break;
                case THAOTAC.XEM:
                    this.Text = "THÔNG TIN TÁC GIẢ";
                    _btnThemMoi.Visible = false;
                    _btnThem.Visible = false;
                    _btnSua.Visible = false;

                    _txtTenTG.ReadOnly = true;
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật nội dung
        //----------------------------------------------------------------------
        public void CapNhatNoiDung()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    break;
                default:
                    HienThiThongTinTG();
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin tác giả
        //----------------------------------------------------------------------
        public void HienThiThongTinTG()
        {
            _txtMaTG.Text = _TacGia.MaTG;
            _txtTenTG.Text = _TacGia.TenTG;
        }

        //----------------------------------------------------------------------
        //Desc: xóa tất cả thông tin hiển thị
        //----------------------------------------------------------------------
        public void XoaTatCa()
        {
            _TacGia.Reset();
            _txtMaTG.Text = "";
            _txtTenTG.Text = "";
        }

        //----------------------------------------------------------------------
        //Desc: lấy dữ liệu
        //----------------------------------------------------------------------
        public DTOTacGia LayDuLieuForm()
        {
            if (_txtTenTG.Text == "")
            {
                MessageBox.Show("Chưa nhập tên tác giả giả");
                return null;
            }

            return new DTOTacGia(_txtTenTG.Text);
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Thoat
        //----------------------------------------------------------------------
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThemMoi
        //----------------------------------------------------------------------
        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            XoaTatCa();
            _ThaoTac = THAOTAC.THEM;
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click Them
        //----------------------------------------------------------------------
        private void btnThem_Click(object sender, EventArgs e)
        {
            DTOTacGia tacgia = LayDuLieuForm();
            if (tacgia != null)
            {
                if (!_bllTacGia.PhatSinhMaTacGia(ref tacgia))
                    MessageBox.Show("Không tạo được mã tác giả");
                else
                {
                    if (_bllTacGia.CapNhat(tacgia))
                    {
                        MessageBox.Show("Thêm thành công");
                        _ThaoTac = THAOTAC.SUA;
                        _TacGia = tacgia;
                        CapNhatGiaoDien();
                        CapNhatNoiDung();
                    }
                    else
                        MessageBox.Show("Thêm thất bại");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Sua
        //----------------------------------------------------------------------
        private void btnSua_Click(object sender, EventArgs e)
        {
            DTOTacGia tacgia = LayDuLieuForm();
            if (tacgia.TenTG == _TacGia.TenTG)
                MessageBox.Show("Chưa thay đổi thông tin tác giả");
            else
            {
                tacgia.MaTG = _TacGia.MaTG;
                if (_bllTacGia.CapNhat(tacgia))
                {
                    MessageBox.Show("Cập nhật thành công");
                    _TacGia.TenTG = tacgia.TenTG;
                    CapNhatNoiDung();
                }
                else
                    MessageBox.Show("Cập nhật thất bại");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void GUITacGia_Load(object sender, EventArgs e)
        {
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện key press
        //----------------------------------------------------------------------
        private void Special_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Utils.IsSpecialKey(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
        }
    }
}
